package com.castle.fortress.admin.orders.entity;

import java.math.BigDecimal;

import com.castle.fortress.admin.orders.dto.GoodsOrderItemDto;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.util.Date;
import java.util.List;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.*;
import lombok.EqualsAndHashCode;
import com.castle.fortress.admin.core.entity.BaseEntity;
/**
 * 订单表 实体类
 *
 * @author Mgg
 * @since 2023-01-13
 */
@Data
@TableName("goods_order")
@EqualsAndHashCode(callSuper = true)
public class GoodsOrderEntity extends BaseEntity  {
	private static final long serialVersionUID = 1L;
	/**
	 * 订单编号
	*/
	private String orderNumber;
	/**
	 * 订单名称
	*/
	private String prodName;
	/**
	 * 订单用户id
	*/
	@JsonSerialize(using = ToStringSerializer.class)
	private Long memberId;
	/**
	 * 订单金额(实际支付金额)
	*/
	private BigDecimal price;
	/**
	 * 原订单金额(原价)
	*/
	private BigDecimal oldPrice;
	/**
	 * 订单改价金额
	*/
	private BigDecimal changePrice;
	/**
	 * 订单状态(用户看的)
	*/
	private Integer orderStatus;
	/**
	 * 订单流转状态(对内)
	*/
	private Integer orderInsideStatus;
	/**
	 * 第三方流水号
	*/
	private String serial;
	/**
	 * 支付类型 1为余额支付 2在线支付 3 货到付款 11 后台付款 21 微信支付 22 支付宝支付 23 银联支付
	*/
	private Integer payType;
	/**
	 * 付款时间
	*/
	private Date payTime;
	/**
	 * 下单渠道
	*/
	private String channel;
	/**
	 * 备注
	*/
	private String remark;
	/**
	 * 优惠券金额(单位元)
	*/
	private BigDecimal couponAmount;
	/**
	 * 配送类型
	*/
	private String dvyType;
	/**
	 * 配送方式id(物流公司ID)
	*/
	private String dvyId;
	/**
	 * 快递单号
	*/
	private String expresssn;
	/**
	 * 运费
	*/
	private BigDecimal dispatchPrice;
	/**
	 * 发货时间
	*/
	private Date dvyTime;
	/**
	 * 取消订单时间
	*/
	private String cancelTime;
	/**
	 * 退款状态
	*/
	private String refundState;
	/**
	 * 订单完成时间
	*/
	private Date finishTime;
	/**
	 * 确认收货时间
	*/
	private Date confirmReceiptTime;
	/**
	 * 使用的优惠券名
	*/
	private String couponName;
	/**
	 * 使用的优惠券ID
	*/
	private Integer couponId;
	/**
	 * 商家ID(当前默认自营 -1)
	*/
	@JsonSerialize(using = ToStringSerializer.class)
	private Long shopId;
	/**
	 * 商家名称
	*/
	private String shopName;
	/**
	 * 收货人姓名
	 */
	private String consignee;
	/**
	 *收货人手机号
	 */
	private String phone;
	/**
	 *地区编码 省-市-区 编码拼接
	 */
	private String regionCode;
	/**
	 *详细地址 省-市-区-详细地址拼接
	 */
	private String address;

	/**
	 * 订单内商品信息
	 */
	@TableField(exist = false)
	private List<GoodsOrderItemDto> goodsList;

	/**
	 * 开始时间(筛选用)
	 */
	@TableField(exist = false)
	private Date startTime;

	/**
	 * 结束时间(筛选用)
	 */
	@TableField(exist = false)
	private Date endTime;
}
